package com.YK.retryer.strategy.annotationwrapper.resultwrapper;

import lombok.Data;

import java.util.List;
import java.util.function.Predicate;

/**
 * @author yuank
 * @version 1.0.0
 * @date 2025/2/27 14:27:49
 *
 * 实现重试结果包装和 对重试判断逻辑接口
 *
 */
public abstract class AbstractResultListPredicateWrapper implements ResultListWrapper, Predicate {

    //一个ResultListPredicateWrapperImpl.objectList只有Throwable与其他
    //注解内容中 异常/结果的匹配结果集
    protected List<Object> objectList;

    /**
     * 参数是执行的返回结果 用户实现本抽象类此方法可以自定义重试判断逻辑器
     * 要求：实现这个接口后必须
     *  1声明为Bean     @Bean
     *  2声明为原型Bean  @Scope("prototype")
     */
//  @Override
//  public boolean test(Object o) {
//      return false;
//  }

    @Override
    //this.wrapper入参的时候需要控制一下本list类型
    public ResultListWrapper wrapper(List<Object> objectList) {
        this.objectList = objectList;
        return this;
    }

    public List<Object> getObjectList() {
        return objectList;
    }
}